/*
 * @lc app=leetcode.cn id=67 lang=javascript
 *
 * [67] 二进制求和
 */

// @lc code=start
/**
 * @param {string} a
 * @param {string} b
 * @return {string}
 */
var addBinary = function(a, b) {
  // 切分成数组 按位相加 这样就可以避免精度问题
  let aArr = a.split("").map(Number).reverse(), bArr = b.split("").map(Number).reverse(), arr = [];
  // 按位相加
  for (let i = 0; i < (aArr.length >= bArr.length ? aArr.length : bArr.length); i++) {
    arr[i] = (arr[i] || 0) + (aArr[i] || 0) + (bArr[i] || 0);
    if (arr[i] >= 2) {
      arr[i] = arr[i] % 2;
      arr[i + 1] = 1;
    }
  }
  return arr.reverse().join("");
};
// @lc code=end

